package com.demo.qywx.service.impl;

import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.demo.qywx.model.UserCode;
import com.demo.qywx.model.UserInfo;
import com.demo.qywx.service.QyWxApiService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QyWxApiserviceImpl implements QyWxApiService {


    @Override
    public String getAppToken(String appId, String appSecret) {
        String token="";
        //获取通讯录token-reids版本
        /*if(redisService.hasKey("vcanAppToken")){
            token=redisService.get("vcanAppToken").toString();
        }else{
            //请求token
            String content= HttpUtil.get("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+appId+"&corpsecret="+appSecret);
            if(StringUtils.isNotBlank(content)){
                JSONObject json= JSON.parseObject(content);
                if(json.getInteger("errcode")==0){
                    token=json.getString("access_token");
                    redisService.set("vcanAppToken",token,7200);
                }
            }
        }*/

        //无redis版本
        String content= HttpUtil.get("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+appId+"&corpsecret="+appSecret);
        if(StrUtil.isNotBlank(content)){
            JSONObject json= JSON.parseObject(content);
            if(json.getInteger("errcode")==0){
                token=json.getString("access_token");
            }
        }
        return token;
    }

    @Override
    public UserCode getUserIdByCode(String code, String token) {
        UserCode userCode=null;
        log.info("*******************获取网页授权code的用户ID开始***************************");
        String user_ticket =HttpUtil.get("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=" + token + "&code=" + code);
        log.info("企业微信：user_ticket=" + user_ticket);
        log.info("*******************获取网页授权code的用户ID结束****************************");
        if(StrUtil.isNotBlank(user_ticket)){
            userCode=JSON.parseObject(user_ticket,UserCode.class);
        }
        return userCode;
    }

    @Override
    public UserInfo getUserInfo(String user_ticket) {
        UserInfo userInfo=null;
        log.info("*******************根据tickit获取敏感信息开始***************************");
        String user_info =HttpUtil.post("https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail","{access_token:"+user_ticket+"}");
        log.info("企业微信：user_info=" + user_info);
        log.info("*******************根据tickit获取敏感信息结束****************************");
        if(StrUtil.isNotBlank(user_info)){
            userInfo=JSON.parseObject(user_info,UserInfo.class);
        }
        return userInfo;
    }


}
